2007 alkanut finanssikriisi johti Suomessa pitkään taantumaan, jota usein myös saatetaan kutsua lamaksi. Itse kartan “lama” termin käyttöä tässä asiayhteydessä, koska muihin lamoihin verrattuna viimeisin taantuma on etenkkin työttömyyden näkökulmasta huomattavasti lievempi kuin esim. 90-luvun lama, jolloin työttömyys nousi 3,5 %:sta 18,9 %:iin Suomessa. Viimeisimmän taantuman aikana BKT mateli nollassa useita vuosia (mutta ei mitenkään hurjasti pakkasella) ja työttömyys on pysynyt korkealla tasolla (~8-10 %), mutta mitään valtavaa hyppäystä työttömyydessä ei ole tapahtunut. Työttöymys oli korkealla tasolla jo ennen taantumaa, koska Suomen työttömyys ei ollut ehtinyt laskea 90-luvun lamaa edeltävälle tasolle.

library(tidyverse)
library(lubridate)
library(pxweb)
library(gdalUtils)
library(sf)
library(janitor)
library(gganimate)
library(rvest)
get_df <- 
    get_pxweb_data(url = "http://pxnet2.stat.fi/PXWeb/api/v1/fi/Explorer/Indikaattorit/alueindikaattorit.px",
                   dims = list(Alue = c('*'),
                               Tiedot = c('Työttömiä_o', 'Nuortyöt_o'),
                               Vuosi = c('*')),
                   clean = TRUE) %>% as.tibble()

ogr2ogr("WFS:http://geo.stat.fi/geoserver/tilastointialueet/wfs", "kunnat.shp", "kunta1000k_2013")
kunnat <- read_sf("kunnat.shp")
prepped_data <- get_df %>% 
    filter(Vuosi %in% 1985:2012, !str_detect(Alue, 'SK|ELY|MK|Koko')) %>%
    spread(Tiedot, -Alue) %>% 
    janitor::clean_names() %>% 
    rename(n_tyo = nuorisotyottomyysaste_percent, k_tyo = tyottomyysaste_percent) 

kuntatiedot <- 
    'https://www.tilastokeskus.fi/meta/luokitukset/kunta/001-2012/index.html' %>% #Tämän voisi kopioida suoraa triblenä, mutta scrapetaan uudelleenajettavuuden vuoksi
    rvest::html() %>% 
    rvest::html_nodes(xpath = '//*[@id="content"]/table') %>% 
    rvest::html_table(fill = T) %>% 
    as.data.frame() %>% 
    as.tibble() %>% 
    select(1:2) %>% 
    tail(-1) %>% 
    rename(kuntanumero = 1, alue = 2)

kuntanumerot <- prepped_data %>% 
    mutate(alue = alue %>% str_replace("(?s) .*", ""),
           vuosi = vuosi %>% as.character() %>% as.integer()) %>% 
    left_join(kuntatiedot)
kuntanumerot %>% 
    filter(is.na(kuntanumero)) %>% 
    count(alue)

#Note to self: "Koski TI", "Maarianhamina - Marienhamn" ja "Pedersören kunta" ovat ainoat kunnat, joiden nimessä on välilyönti
#Maarianhamina on ainoa kunta, jonka nimi ilmoitetaan suomenkielisessä versiossa suomeksi ja ruotsiksi

fixed_kunnat <- kuntanumerot %>% 
    mutate(kuntanumero = case_when(!is.na(kuntanumero) ~ kuntanumero %>% as.integer(), 
                                   alue == 'Koski' ~ 284L,
                                   alue == 'Maarianhamina' ~ 478L,
                                   alue == 'Pedersören' ~ 599L),
           nuorisokerroin = n_tyo / (n_tyo + k_tyo)) 
kunta_limit <- fixed_kunnat %>% 
    mutate(n_tyo = ifelse(n_tyo > 50, 50, n_tyo))
#Muodostetaan gif työttömyydestä vuosittain 1990-2012
gg_tyottomyys <- kunnat %>% 
    select(-vuosi) %>% 
    mutate(kuntanumero = kunta %>% as.integer()) %>% left_join(kunta_limit) %>% 
    ggplot() + 
    theme_void() +
    geom_sf(aes(fill = k_tyo)) + 
    scale_fill_gradient2(low = "white", high = "#5b0000") +
    labs(title = 'Työttömyys (%) vuonna: {frame_time}', fill = '') +
    transition_time(vuosi)

gg_tyottomyys
gg_tyottomyys + geom_sf(aes(fill = n_tyo)) + labs(title = 'Nuorisotyöttömyys (%) vuonna: {frame_time}', fill = '')
kunnat_maakunnat <- 'https://www.stat.fi/meta/luokitukset/kunta/001-2013/luokitusavain_maakunta.html' %>% 
    rvest::html() %>% 
    rvest::html_nodes(xpath = '//*[@id="content"]/table') %>% 
    rvest::html_table(fill = T) %>% 
    as.data.frame() %>% 
    as.tibble() %>% 
    tail(-1) %>% 
    rename(kuntanumero = 1, kunta = 2, maakuntanumero = 3, maakunta = 4)


rajat <- c(0, 50)


kunta_limit %>% 
    mutate(kuntanumero = kuntanumero %>% as.character()) %>% 
    left_join(kunnat_maakunnat)%>% #https://www.stat.fi/meta/luokitukset/kunta/001-2013/luokitusavain_maakunta.html
    ggplot() +
    geom_line(data = 1:50 %>% as.tibble(), aes(x = value, y = value), color = 'grey70') +
    theme_minimal() +
    geom_point(aes(n_tyo, k_tyo)) +
    scale_y_continuous(limits = rajat) +
    scale_x_continuous(limits = rajat) +
    facet_wrap(~maakunta, nrow = 5)  +
    labs(title = 'Nuorisotyöttömyys ja työttömyys vuonna: {frame_time}', fill = '', y = 'Työttömyysaste (%)', x = 'Nuorisotyöttömyysaste (%)') +
    shadow_wake(0.1, alpha = 0.25) +
    transition_time(vuosi)
tyottomyys_87 <- get_df %>% 
  filter(Vuosi %in% 1987:2012, str_detect(Alue, 'Koko')) %>% 
  spread(Tiedot, values) %>% 
  janitor::clean_names() %>% 
  mutate(vuosi = vuosi %>% as.character() %>% as.integer())

fixed_kunnat %>% 
  mutate(kuntanumero = kuntanumero %>% as.character()) %>% 
  left_join(kunnat_maakunnat) %>% 
  left_join(asukasluku) %>% #https://www.kuntaliitto.fi/sites/default/files/media/file/Kuntajaot%20ja%20asukasluvut%202000-2017_5.xls
  ggplot(aes(n_tyo, k_tyo)) +
  theme_minimal() +
  geom_hline(data = tyottomyys_87, aes(yintercept = tyottomyysaste_percent), color = 'grey70', lty = 'dashed') + 
  geom_vline(data = tyottomyys_87, aes(xintercept = nuorisotyottomyysaste_percent), color = 'grey70', lty = 'dashed') +
  scale_y_continuous(limits = c(0, 70), breaks = seq(0, 100, 10), expand = c(0, 0)) +
  scale_x_continuous(limits = c(0, 70), breaks = seq(0, 100, 10), expand = c(0, 0)) +
  geom_segment(data = tyottomyys_87, aes(x = 0, y = tyottomyysaste_percent, xend = nuorisotyottomyysaste_percent, yend = 0), size = 1, color = 'grey70') +
  geom_smooth() + 
  geom_point(aes(size = asukasluku), alpha = 0.2) + 
  scale_color_manual(values = thl_green) +
  transition_time(vuosi) +
  labs(title = 'Nuorisotyöttömyys ja työttömyys Suomessa vuonna: {frame_time}', y = 'Työttömyysaste (%)', x = 'Nuorisotyöttömyysaste (%)', size = 'Asukasluku')